package com.qba.trafficbb;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Comparator;
import java.util.Date;
import java.util.List;

import com.google.gson.Gson;
import com.qba.trafficbb.modelo.Estadistica;
import com.qba.trafficbb.modelo.Juego;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;

public class BaseActivity extends Activity {
	
	protected static String CNT_PREF_ESTADISTICA="estadistica";
	protected static String CNT_ULTIMA_ESTADISTICA="ultimaEstadistica";
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
	    Juego.obtieneInstancia(this); 
	}
	
	protected List<Estadistica> leeEstadistica()
	{
		
		List<Estadistica> result=null;
		Gson gson=new Gson();
		
		String jsonEstadis=leePreferencia(CNT_PREF_ESTADISTICA, "");
		
		Estadistica[] arrEst=gson.fromJson(jsonEstadis, Estadistica[].class);
		if(arrEst!=null){
			
			result= new ArrayList<Estadistica>(Arrays.asList(arrEst));
			
		}
		else
		{
			result=new ArrayList<Estadistica>();
		}
		return result;
	}

	public void escribeEstadistica(List<Estadistica> estadisticas) {
		escribePreferencia(CNT_PREF_ESTADISTICA, new Gson().toJson(estadisticas));		
	}
	
	protected String aMesEnEspanol(Integer numMes) throws Exception
	{
		String result="";
		
		switch(numMes)
		{
			case Calendar.JANUARY:result="Enero";break;
			case Calendar.FEBRUARY:result="Febrero";break;
			case Calendar.MARCH:result="Marzo";break;
			case Calendar.APRIL:result="Abril";break;
			case Calendar.MAY:result="Mayo";break;
			case Calendar.JUNE:result="Junio";break;
			case Calendar.JULY:result="Julio";break;
			case Calendar.AUGUST:result="Agosto";break;
			case Calendar.SEPTEMBER:result="Septiembre";break;
			case Calendar.OCTOBER:result="Octubre";break;
			case Calendar.NOVEMBER:result="Noviembre";break;
			case Calendar.DECEMBER:result="Diciembre";break;
			default:throw new Exception("Mes invalido");
		
		}
		
		return result;
	}
	
	protected String aDiaEnEspanol(Integer numDia) throws Exception
	{
		String result="";
		
		switch(numDia)
		{
			case Calendar.SUNDAY:result="Domingo";break;
			case Calendar.MONDAY:result="Lunes";break;
			case Calendar.TUESDAY:result="Martes";break;
			case Calendar.WEDNESDAY:result="Miercoles";break;
			case Calendar.THURSDAY:result="Jueves";break;
			case Calendar.FRIDAY:result="Viernes";break;
			case Calendar.SATURDAY:result="Sabado";break;
			
			default:throw new Exception("Mes invalido");
		
		}
		
		return result;
	}
	
	protected String formateaFecha(Date fecha)
	{
		String result="Fecha no especificada";
		try{
			if(fecha!=null){
				Calendar c=Calendar.getInstance();
				c.setTime(fecha);
				
				result=aDiaEnEspanol(c.get(Calendar.DAY_OF_WEEK))+","+ c.get(Calendar.DAY_OF_MONTH)+" de "+aMesEnEspanol(c.get(Calendar.MONTH))+" de "+ c.get(Calendar.YEAR);
			}
		}
		catch(Exception e)
		{
			Log.e("error en fecha", "error en fecha");
			result="Fecha no especificada";
		}
		return result;
		
	}
	
	public void escribePreferencia(String nombre, String valor) {
		SharedPreferences customSharedPreference = getSharedPreferences(
				"preffile", Activity.MODE_PRIVATE);
		SharedPreferences.Editor editor = customSharedPreference.edit();
		editor.putString(nombre, valor);
		editor.commit();

	}

	public String leePreferencia(String nombre, String valorDef) {
		SharedPreferences customSharedPreference = getSharedPreferences(
				"preffile", Activity.MODE_PRIVATE);
		return customSharedPreference.getString(nombre, valorDef);

	}

	public void escribeUltimaEvaluacion(Estadistica est) {
		escribePreferencia(CNT_ULTIMA_ESTADISTICA, new Gson().toJson(est));
	}

	
}
